package com.atguigu.minio.bean;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.util.Date;

@Data
@Schema(description = "用户实体类")
//@Builder //使用构建者设计模式 生成builder和build方法创建TUser对象
@TableName(value = "t_user") //mp映射表名的注解，mp优先使用注解的值，最后再使用类名转换
public class TUser {
    @Schema(description = "主键值" ,requiredMode = Schema.RequiredMode.REQUIRED)
//    @TableId(type = IdType.ASSIGN_ID)//使用雪花算法生成id
//    @TableId(type = IdType.AUTO) //使用数据库自增长生成id，数据库表必须设置了主键自增
//    @TableId(type = IdType.ASSIGN_UUID) //使用uuid生成id
    @TableId(value = "id")
    private Long id;
    @TableField(value = "username" )
    @Schema(description = "用户名",example = "zhaoliying")
    private String username;
    @Schema(description = "邮箱",example = "zhaoliying@atguigu.cn")
    private String email;
    @Schema(hidden = true)
    private Integer age;
    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)//当前属性 在TUser新增时触发自动填充
    private Date createTime;
    @Schema(description = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)//当前属性 在TUser新增和更新时触发自动填充
    private Date updateTime;
    /*
        boolean类型的属性：
            deleted生成的getter方法是 isDeleted
        Boolean类型的属性
            deleted生成的getter方法是 getDeleted
     */
    @TableLogic //表示当前字段为逻辑删除字段：查询时自动添加 deleted = 0 ,删除时自动更新该字段值为1
    @TableField(value = "is_deleted") //指定当前属性在表中的列名，mp优先使用注解中的列名，最后使用属性名
    private Boolean deleted;

    @TableField(exist = false) //表示扩展属性，数据库表不存在的属性，mp生成sql时会忽略
    private String password;
}
